package com.xiaoq.shop.repository;

import com.xiaoq.shop.entity.UserCouponEntity;
import com.xiaoq.vo.PagingVo;

import java.util.List;

/**
 * Created by chenjh on 2017/11/6.
 */
public interface IUserCouponRepository {

    /**
     *  得到所有的券
     * @param shopId 商店Id, 商店Id为空时，查询用户的所有优惠券
     * @param userId 用户Id
     * @return
     */
    List<UserCouponEntity> getUserAllCouponList(String shopId, String userId);

    /**
     *  根据主键查询优惠券信息
     * @param userCouponId
     * @return
     */
    UserCouponEntity getUserCouponById(String userCouponId);


    /**
     *  更新优惠券信息
     * @param userCouponId
     * @return
     */
    boolean updateUserCoupon(String userCouponId, String userId, int userCouponState);

    /**
     *  得到用户优惠券的数量
     * @param userId  用户的Id
     * @return
     */
     long getUserCouponCount(String userId);

    /**
     *  根据优惠券ID和用户ID得到用户的券的数量
     * @param userId 用户ID
     * @param couponInstanceCode 优惠券ID
     * @return
     */
    long getUserCouponCount(String userId, String couponInstanceCode);

    /**
     *  根据优惠券ID和用户ID得到用户的券
     * @param userId 用户ID
     * @param couponInstanceCode 优惠券ID
     * @return
     */
    List<UserCouponEntity> getUserCouponList(String userId, String couponInstanceCode);

    /**
     *  领卷操作
     * @param userCoupon
     */
    boolean save(UserCouponEntity userCoupon);

    /**
     *  得到未过期的优惠券信息
     * @param shopId 店ID,可为null
     * @param userId 用户ID,可为null
     * @return
     */
    List<UserCouponEntity> getNotExpiredCouponList(String shopId, String userId);

    /**
     * @param shopId
     * @param couponInstanceCodeList 是Coupon中的主键
     * @return
     */
    List<UserCouponEntity> getUserCouponList(String shopId, List<String> couponInstanceCodeList);


    /**
     * 定时任务用
     * @param couponInstanceCodeList 优惠券主键列表
     * @param pagingVo 分页参数
     * @return
     */
    List<UserCouponEntity> getUserCouponList4Schedule(List<String> couponInstanceCodeList, PagingVo pagingVo);
}
